package model;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;

public class ResultSetTableModel extends AbstractTableModel
{

    private Vector colHeaders;
    private Vector tbData;

    public ResultSetTableModel(ResultSet rsData, int code) throws SQLException
    {
        ResultSetMetaData rsMeta = rsData.getMetaData();
        int count = rsMeta.getColumnCount();

        colHeaders = new Vector(count);
        tbData = new Vector();

        switch (code)
        {
            case 1:
                colHeaders.addElement("Tên phòng");
                colHeaders.addElement("Loại phòng");
                colHeaders.addElement("Giá phòng");
                colHeaders.addElement("Tình trạng");
                break;
            case 2:
                colHeaders.addElement("ID");
                colHeaders.addElement("Họ tên");
                colHeaders.addElement("Năm sinh");
                colHeaders.addElement("CMTND");
                colHeaders.addElement("Giới tính");
                colHeaders.addElement("Điện thoại");
                colHeaders.addElement("Địa chỉ");
                break;
            case 3:
                colHeaders.addElement("ID");
                colHeaders.addElement("Họ tên");
                colHeaders.addElement("Năm sinh");
                colHeaders.addElement("CMTND");
                colHeaders.addElement("Giới tính");
                colHeaders.addElement("Điện thoại");
                colHeaders.addElement("Địa chỉ");
                colHeaders.addElement("Ngày đến");
                colHeaders.addElement("Phòng thuê");
                colHeaders.addElement("Loại phòng");
                colHeaders.addElement("Giá phòng");
                break;
            case 4:

                colHeaders.addElement("Ngày trả");
                colHeaders.addElement("Ngày đến");
                colHeaders.addElement("Họ tên");
                colHeaders.addElement("Năm sinh");
                colHeaders.addElement("CMTND");
                colHeaders.addElement("Giới tính");
                colHeaders.addElement("Điện thoại");
                colHeaders.addElement("Địa chỉ");
                colHeaders.addElement("Phòng thuê");
                colHeaders.addElement("Loại phòng");
                colHeaders.addElement("Số tiền phải trả");
                break;
            case 5:
                colHeaders.addElement("Loại phòng");
                colHeaders.addElement("Giá phòng");
                break;
            case 6:
                colHeaders.addElement("Tên phòng");
                colHeaders.addElement("Loại phòng");
                colHeaders.addElement("Giá phòng");
                break;
            case 7:
                colHeaders.addElement("Tên đăng nhập");
                colHeaders.addElement("Kiểu tài khoản");
                break;
            default:
                break;

        }

        while (rsData.next())
        {

            Vector dataRow = new Vector(count);

            for (int i = 1; i <= count; i++)
            {
                dataRow.addElement(rsData.getObject(i));
            }
            tbData.addElement(dataRow);
        }
    }

    public int getColumnCount()
    {
        return colHeaders.size();
    }

    public int getRowCount()
    {
        return tbData.size();
    }

    public Object getValueAt(int row, int column)
    {
        Vector rowData = (Vector) (tbData.elementAt(row));
        return rowData.elementAt(column);
    }

    @Override
    public String getColumnName(int column)
    {
        return (String) (colHeaders.elementAt(column));
    }
}